/**
 * table混合
 * */
export default {
    data () {
        return {
            editIndex: -1, // 当前编辑的位置
            editValue: '', // 编辑内容
            loading: false, // 是否显示加载动画
            tableDataList: [], // 表格数据
            selectedData: [], // 已选中的数据
            nowPage: 1, // 当前页
            totalNum: 0, // 总条数
            pageShow: 10 // 每页展示条数
        }
    },
    computed: {
        // 筛选表格项
        filterColumns () {
            return this.getfilterColumns();
        }
    },
    methods: {
        // 切换分页
        handleChangePage (val) {
            this.pageShow = val;
            this.$nextTick(() => {
                this.getData();
            });
        },
        // 获取筛选列
        getfilterColumns () {
            const columns = [...this.columns];
            const filterColumns = [];
            this.showColumns.sort().forEach(item => {
                filterColumns.push(columns[item]);
            });
            return filterColumns;
        },
        // 过滤条件改变时触发
        handleFilterChange () {
            // 从第一页开始
            this.nowPage = 1;
            this.getData();
        },
        // 选中一项，将数据添加至已选项中
        // selection：已选项数据 row：刚选择的项数据
        handleSelect (selection, row) {
            this.selectedData.push(row);
        },
        // 取消选中一项，将取消的数据从已选项中删除
        // selection：已选项数据 row：刚选择的项数据
        handleSelectCancel (selection, row) {
            const index = this.selectedData.findIndex(
                item => item.skuNo === row.skuNo
            );
            this.selectedData.splice(index, 1);
        },
        // 当前页全选时，判断已选数据是否存在，不存在则添加
        // selection：已选项数据
        handleSelectAll (selection) {
            selection.forEach(item => {
                if (this.selectedData.findIndex(i => i.skuNo === item.skuNo) < 0) {
                    this.selectedData.push(item);
                }
            });
        },
        // 取消当前页全选时，将当前页的数据（即 tableDataList）从已选项中删除
        handleSelectAllCancel () {
            this.tableDataList.forEach(item => {
                const index = this.selectedData.findIndex(
                    i => i.skuNo === item.skuNo
                );
                if (index >= 0) {
                    this.selectedData.splice(index, 1);
                }
            });
        },
        // 清空所有已选项
        handleClearSelect () {
            this.selectedData = [];
        },
        // 批量操作项
        handleClickItem (name) {
            if (name === 'delete') {
                this.selectedData.forEach(item => {
                    const index = this.tableDataList.findIndex(
                        i => i.skuNo === item.skuNo
                    );
                    if (index >= 0) {
                        this.tableDataList.splice(index, 1);
                    }
                });
                this.selectedData = [];
            }
        },
        // 导出表格
        exportData (type) {
            this.$refs.table.exportCsv({
                filename: '商品列表'
            });
        }
    }
}
